
//封装全局APP支付方法
import {weixinPay} from "@/utils/api/api.js"; //微信支付
import {aliPay} from "@/utils/api/api.js"; //支付宝支付
//封装APP支付方法
/**
 * 参数1 必传 log_id
 * 参数2  money  价格
 * 参数3  e 'weixin'微信支付 'alipay'支付宝支付
 * 参数4 order_id  订单id
 * 参数5  type  订单类型
 * **/
const apppay =  (log_id,money,e,order_id,type,isshowmode=true)=>{
    return new Promise((resolve,reject)=>{
		if(e=='weixin'){ //微信支付
			weixinPay({
				log_id:log_id,//=》支付日志id
				amount:money,//=》支付金额
				//区分是什么设备  wechat  app
				
				// #ifndef APP-PLUS
				user_type:"wechat",
				// #endif
				
				// #ifdef APP-PLUS || H5
				user_type:"app",
				// #endif
				
				
			}).then(res=>{
				console.info("111",res);
				uni.hideLoading();
				if(res.code ==1){
					
					// #ifdef APP-PLUS
					let orderInfo = res.data.result;
					console.info("orderInfo",orderInfo);
					uni.requestPayment({
					    provider:"wxpay" ,
					    orderInfo:orderInfo,
					    success: (e) => {
							if(isshowmode){
								uni.showToast({
									title:'支付成功',
									icon:'none'
								});
							}
							
							resolve(res);
					    },
					    fail: (e) => {
							console.info("支付错误",e);
							uni.showToast({
								title:'取消支付',
								icon:'none'
							})
							reject(false);
					    },
					    complete: (e) => {
							console.info("e",e);
							reject(false);
					    }
					})
					
					// #endif
					
					
					//小程序支付
					// #ifndef APP-PLUS
					let objinfo = {
						timeStamp: res.data.result.timeStamp,
						nonceStr: res.data.result.nonceStr,
						package: res.data.result.package,
						signType: res.data.result.signType,
						paySign: res.data.result.paySign,
					};
					wx.requestPayment({
						provider: "wxpay",
						// orderInfo: objinfo,
						...objinfo,
						success: (e) => {
							resolve(true);
						},
						fail: (e) => {
							console.info(e,"错误");
							uni.showToast({
								title: '取消支付',
								icon: 'none'
							})
							reject(false);
						},
						complete: (e) => {
							reject(false);
						}
					})
					// #endif
					//----------------小程序微信支付-------------------
					
					
					
				}else{
					uni.showToast({
						title:res.msg,
						icon:'none'
					})
				}
				
			}).catch(err=>{
				console.info("err",err);
				uni.hideLoading();
				reject(false);
			})
			
		}else{ //支付宝支付
			aliPay({
				log_id:log_id,
				amount:money,
			}).then(res=>{
				console.info(res,"res");
				uni.hideLoading();
				
				// #ifdef APP-PLUS
				//-------------------------uni-APP ALIAPY-------------------------------------
				try{
					console.info("----------5555555555-----");
					uni.requestPayment({
					    provider:"alipay" ,
					    orderInfo:res.data.response,//params,//res.data,
					    success: (e) => {
							if(isshowmode){
								uni.showToast({
									title:'支付成功',
									icon:'none'
								});
							}
							resolve(res);
					    },
					    fail: (err) => {
							console.info("支付错误",err);
							uni.showToast({
								title:'取消支付',
								icon:'none'
							})
							reject(false);
					    },
					    complete: (e) => {
							console.info("err",e);
							reject(false);
					    }
					})
				}catch(e){
					uni.showToast({
						title:'取消支付',
						icon:'none'
					})
					console.info('ea',e);
					reject(false);
				}
				
				//--------------------------------------------------------------
				// #endif
				
				
				// #ifdef MP-ALIPAY
				my.tradePay({
				  // 调用资金冻结接口（alipay.fund.auth.order.app.freeze），获取支付宝预授权参数
					orderStr: res.data.response,
					success: (e) => {
						console.info(e,"e");
						// 进来这里面了 不一定就是成功了 还需要继续判断
						//！！！！！！！！！！！！
						// https://opendocs.alipay.com/mini/api/openapi-pay
						if(e.resultCode==9000 || e.resultCode==8000){
							if(isshowmode){
								uni.showToast({
									title:'支付成功',
									icon:'none'
								});
							}
							resolve(res);
						}else{
							uni.showToast({
								title:'支付失败',
								icon:'none'
							});
							reject(false);
						}
						
					},
					fail: (e) => {
						uni.showToast({
							title:'取消支付',
							icon:'none'
						})
						console.info('ea--',e);
						reject(false);
					}
				});
				// #endif
				
				
			}).catch(err=>{
				console.info("err",err);
				uni.hideLoading();
				reject(false);
			})
		}
		
    });

}

export {apppay}